"""
Solvers module for PDEJulia.jl

Comprehensive time integration solvers for PDEs with intelligent
auto-selection based on PDE characteristics.
"""
module Solvers

using DifferentialEquations
using OrdinaryDiffEq
using LinearAlgebra
using ..Grids
using ..Fields
using ..PDEs

# Include solver implementations
include("base.jl")
include("explicit.jl")
include("adaptive.jl")
include("auto_selection.jl")

# Export solver types
export AbstractSolver
export ExplicitEulerSolver, ImplicitEulerSolver, RungeKuttaSolver
export AdamsBashforthSolver, CrankNicolsonSolver, AdaptiveSolver

# Export solver functions
export solve, solve!, step!, Controller
export registered_solvers

# Export auto-selection functionality
export PDECharacteristics, select_optimal_solver, auto_solver
export recommend_grid_resolution, estimate_computational_cost

# Make auto-selection functions available at module level
using .PDEs: select_optimal_solver, PDECharacteristics

end # module Solvers